import React from 'react';
import { Modal, message } from 'antd';
import { intl } from 'umi'; // 或从 props 传入
import { FormattedMessage, useIntl } from '@umijs/max';

interface ConfirmActionModalProps {
  visible: boolean; // 控制 Modal 是否显示
  record: any; // 当前操作的记录（如客户信息）
  onUpdate: (id: string, status: number) => Promise<any>; // 更新状态的 API 方法
  actionRef?: any; // 用于刷新表格的 ref
  onCancel: () => void; // 关闭 Modal 的回调
  intl?: any; // 国际化对象（如果从外部传入）
}

const ConfirmActionModal: React.FC<ConfirmActionModalProps> = ({
  visible,
  record,
  onUpdate,
  actionRef,
  onCancel,
  intl = intl, // 默认使用 umi 的 intl，也可以从 props 传入
}) => {
  // 点击确认按钮时的逻辑
  const handleOk = async () => {
    const hide = message.loading(intl.formatMessage({ id: 'message.processing' , defaultMessage:"processing..."})); // 'Processing...'
    try {
      const status = record.customerStatus === 1 ? 0 : 1;
      await onUpdate(record.id, status);
      hide();
      message.success(
        intl.formatMessage(
          { id: 'message.status.success' },
          { action: status === 0 ? intl.formatMessage({ id: 'status.enable' ,defaultMessage:"processing..."}) : intl.formatMessage({ id: 'status.disable',defaultMessage:"processing..." }) }
        )
      );
      if (actionRef?.current) {
        actionRef.current.reload(); // 刷新表格
      }
      onCancel(); // 关闭 Modal
    } catch (error) {
      hide();
      message.error(intl.formatMessage({ id: 'request.error.retry' }));
    }
  };

  // 动态生成 Modal 的 content
  const getModalContent = () => {
    const actionText = record.customerStatus === 1 
      ? intl.formatMessage({ id: 'status.enable' }) // '启用'
      : intl.formatMessage({ id: 'status.disable' }); // '停用'
    const customerText = intl.formatMessage({ id: 'customer.label' }); // '客户'

    return intl.formatMessage(
      { id: 'modal.confirm.content' },
      { action: actionText, customer: customerText }
    );
  };

  return (
    <Modal
      title={intl.formatMessage({ id: 'modal.confirm.title' })} // '确认操作'
      open={visible}
      onOk={handleOk}
      onCancel={onCancel}
      okText={intl.formatMessage({ id: 'modal.confirm.okText' })} // '确认'
      cancelText={intl.formatMessage({ id: 'modal.confirm.cancelText' })} // '取消'
    >
      {getModalContent()}
    </Modal>
  );
};

export default ConfirmActionModal;